package com.liyuci.core.thymeleaf.eleondialect.element;

import com.liyuci.core.thymeleaf.eleondialect.BaseElementTagProcessor;

import lombok.extern.slf4j.Slf4j;

import org.apache.commons.lang3.time.StopWatch;
import org.thymeleaf.context.ITemplateContext;
import org.thymeleaf.model.IProcessableElementTag;
import org.thymeleaf.processor.element.IElementTagStructureHandler;
import org.thymeleaf.templatemode.TemplateMode;

/**
 * textarea大文本框标签
 * @author liyuci
 * @date 2018-02-06 22:03:05
 */
@Slf4j
public class TextareaElementTagProcessor extends BaseElementTagProcessor
{
	// 标签名
	private static final String ELEMENT_NAME = "textarea";

	public TextareaElementTagProcessor(String dialectPrefix)
	{
		super(TemplateMode.HTML, // 此处理器将仅应用于HTML模式
				dialectPrefix, // 要应用于名称的匹配前缀
				ELEMENT_NAME, // 标签名称：匹配此名称的特定标签
				true, // 将标签前缀应用于标签名称
				null, // 无属性名称：将通过标签名称匹配
				false, // 没有要应用于属性名称的前缀
				PRECEDENCE); // 优先(内部方言自己的优先)
	}

	@Override
	protected void doProcess(ITemplateContext context, IProcessableElementTag tag, IElementTagStructureHandler structureHandler)
	{
		StopWatch watch = new StopWatch();
		watch.start();
		//基本属性
		final String id = getString(context, tag, "id");
		final String name = getString(context, tag, "name");
		final String value = getString(context, tag, "value");
		
		StringBuilder html = new StringBuilder();
		html.append("<" + ELEMENT_NAME);
		html.append(getIdAndNameHtml(id, name));
		html.append(">");
		html.append(value);
		html.append("</"+ ELEMENT_NAME +">");
		
		//生成html信息
		generateHtml(context, structureHandler, html);
		watch.stop();
		log.info("[textarea大文本框标签]耗时："+ watch.getTime() +"ms.");
	}
}
